package xyz.comfyz.web.commons.framework.result;

import lombok.Data;

/**
 * @author :    comfy
 * @date :      2018-05-08 09:53:38
 * @since :     1.8
 * <p>
 * 返回实体
 */
@Data
public final class Result<T> {

    private final int code;

    private final String msg;

    private final T data;


    /**
     * 自定义返回code
     *
     * @param code 返回状态码
     */
    public Result(Code code) {
        this(code, code.getMessage(), null);
    }

    /**
     * 自定义返回code，状态码解释
     *
     * @param code 返回状态码
     * @param msg  状态码解释
     */
    public Result(Code code, String msg) {
        this(code, msg, null);
    }

    /**
     * 自定义返回code
     *
     * @param code 返回状态码
     * @param data 返回数据
     */
    public Result(Code code, T data) {
        this(code, code.getMessage(), data);
    }

    /**
     * 自定义返回code，状态码解释，数据
     *
     * @param code 返回状态码
     * @param data 返回数据
     */
    public Result(Code code, String msg, T data) {
        this.code = code.getCode();
        this.msg = msg;
        this.data = data;
    }

}
